1. Field of the Invention
The present invention relates generally to the field of computer networking, and in particular to a system for dynamically determining the effective speed of a communications link between two network devices.
2. Related Art
Existing devices used to communicate information over a computer network, such as the Internet, typically have limited capability for determining the effective speed of the communications links they use, and therefore little capability to adapt their behavior to such link speed. For example, a device that is sending a packet to another device over a communications link comprising multiple "legs," the sending device may have access to data relating to the raw bandwidth of the first leg of the communications link to that other device, but no data relating to the effective or usable bandwidth of the other legs. Existing devices typically rely on the Transmission Control Protocol (TCP) to deliver their packets regardless of the condition of the transmission medium being used. Thus, users desiring to download information from a Web site, for example, are often required to specifically select whether to download content that is either formatted for a relatively fast connection (usually higher quality or higher resolution) or a relatively slow connection (usually lower quality or lower resolution), and must make this selection without having up-to-date information about the effective speed of the link that will be used for the download.
Knowing the effective speed of an entire communications link between two devices, or even a reasonable approximation of the effective speed, can be highly useful. For instance, a device with such knowledge may dynamically alter its behavior to make better use of the communications link, such as by scaling or compressing content prior to transmitting the content to a peer device on the other end of an unusually slow communications link. Effective link speed information may also be used, for example, to adapt the quality of H.263 video transmissions, or to dynamically select among several communications links coupled to a multi-homed device, such as a notebook computer having access to both cellular data dial-up and narrow-band socket connections.
Accordingly, there is a need for a method of dynamically determining the effective speed of a communications link between two network devices. Moreover, there is a need for a method of determining the effective speed of communications links between network devices without requiring changes to existing network infrastructure. In other words, to the maximum extent possible, the method should be transparent to, or at least compatible with, the existing communications capabilities of standard network devices.